/**
 * @param {number[]} nums
 * @return {boolean}
 */
 var check = function (nums) {
    let n = nums.length, flag = 0;

    // 找到第一个出现非递增的位置
    for (let i = 1; i < n; ++i) {
        if (nums[i] < nums[i - 1]) {
            flag = i;
            break;
        }
    }

    // 没找到说明全数组递增，直接返回true
    if (flag === 0) {
        return true;
    }

    // 从非递增位置开始判断后续数组是否递增
    for (let i = flag + 1; i < n; ++i) {
        if (nums[i] < nums[i - 1]) {
            return false;
        }
    }

    // 两个子数组都递增就比较后一个数组的最后一个元素是否比第一个数组的第一个元素小
    // 如3 4 5 1 2
    return nums[0] >= nums[n - 1];
};

// 暴力法
var check = function (nums) {
    let x = 0, numLen = nums.length
    let temp = new Array(numLen)
    let ans = [...nums].sort((a, b) => a - b)

    while (x < numLen) {
        // 轮转一个新数组
        for (let i = 0; i < numLen; i++) {
            temp[(i + x) % numLen] = nums[i]
        }
        // 比较是否相等
        if (temp.toString() == ans.toString()) {
            return true
        }
        // 继续轮转直到超过原数组长度
        x++
    }
    return false
};